class Solution {
    int help(vector<int> &nums, int k)
    {
        if(nums.size() < k)
            return nums.size();

        // 由于是保留 k 个相同数字，对于前 k 个数字，我们可以直接保留
        int n = nums.size();
        int len = k;
        for(int i = k; i < n; i++)
        {
            if(nums[i] != nums[len - k])
                nums[len++] = nums[i]; 
        }
        return len;
    }
public:
    int removeDuplicates(vector<int>& nums) {
        // 为了让解法更具有一般性，我们将原问题的「保留 2 位」修改为「保留 k 位」
        return help(nums, 2);
    }
};